const { Router } = require("express");
const md5 = require("md5");
const JWT = require("jsonwebtoken");
const User = require("../model/User");
const Collect = require("../model/Collect")

const router = new Router();

// 注册
router.post("/register", async (req, res) => {
  // 获取post请求的参数
  const { user_name, password } = req.body;

  // 判断参数是否为空
  if (!user_name || !password) {
    res.status(400).json({ message: "缺少参数" });
    return;
  }

  // 查询用户是否存在
  const user = await User.findOne({ user_name });
  if (user) {
    res.status(400).json({ message: "该用户已存在" });
    return;
  }

  // 注册用户
  let time = new Date();
  const ress = await User.create({
    user_name,
    password: md5(password),
    registerDate: time.getFullYear()
  });
  await Collect.create({ user_id: ress._id })

  res.status(200).json({ message: "注册成功" });
});


// 登录
router.post("/login", async (req, res) => {
  // 获取post请求的参数
  const { user_name, password } = req.body;

  // 判断参数是否为空
  if (!user_name || !password) {
    res.status(400).json({ message: "缺少参数" });
    return;
  }

  // 查询用户是否存在，判断密码是否正确
  const user = await User.findOne(
    { user_name, password: md5(password) },
    { password: false }
  ).lean();
  if (user) {
    // 生成token给客户端
    const token = JWT.sign(user, "hello world", { expiresIn: "1d" });
    // user.avatar = 'http://127.0.0.1:8000' + user.avatar
    // 响应客户端token
    res.status(200).json({ message: "登录成功", token, data: user });
  } else {
    res.status(400).json({ message: "用户名或密码错误" });
  }
});



/* 
检查用户是否登录了
url: /api/auth/check_login
method: GET
header: authorization
*/
router.use(require('./auths.js'));
router.get("/check_login", async (req, res) => {
  // 处理用户信息
  const user = await User.findById(req.userInfo._id,
    { _id: false, __v: false, password: false }
  );
  console.log(user);
  if (user) {
    res.status(200).json({ message: "登录成功", data: user });
  } else {
    //该用户不存在了
    res.status(400).json({ message: "登录失败" });
  }
});


module.exports = router;
